/*
* Button 基础配置
* size: 按钮大小
* type: 按钮类型
* shape: 按钮形状
* danger: 是否危险按钮
* disabled: 是否禁用
*/
export const BASE_BUTTON_CONFIG = {
    size: 'small',
    type: 'primary',
    shape: 'round',
    danger: false,
    disabled: false,
}
/*
* Input 基础配置
* size: 输入框尺寸
* type: 输入框类型
* disabled: 是否禁用
* allowClear: 是否可清空
* placeholder: 占位符
* prefixIcon: 输入框头部图标
* suffixIcon: 输入框尾部图标
* maxlength: 最大输入长度
* minlength: 最小输入长度
*/
export const BASE_INPUT_CONFIG = {
    placeholder: '请输入',
    disabled: false,
    allowClear: true,
    size: 'small',
    prefixIcon: '',
    suffixIcon: '',
    bordered: true,
    maxLength: 20,
    minlength: 0,
    showCount: false,
}
/*
* Select 基础配置
* size: 选择框尺寸
* disabled: 是否禁用
* allowClear: 是否可清空
* placeholder: 占位符
* showSearch: 是否显示搜索框
* showArrow: 是否显示下拉小箭头
* bordered: 是否有边框
* maxTagCount: 最多显示多少个tag
* maxTagTextLength: 每个tag最大显示文字长度
* */
export const BASE_SELECT_CONFIG = {
    placeholder: '请选择',
    disabled: false,
    allowClear: true,
    size: 'small',
    showSearch: true,
    showArrow: true,
    bordered: true,
    maxTagCount: 1,
    maxTagTextLength: 10,
}
/*
* textArea 基础配置
* size: 选择框尺寸
* disabled: 是否禁用
* allowClear: 是否可清空
* placeholder: 占位符
* showCount: 是否显示字数统计
* maxLength: 最大输入长度
* minlength: 最小输入长度
* */
export const BASE_TEXTAREA_CONFIG = {
    placeholder: '请输入',
    disabled: false,
    allowClear: true,
    size: 'small',
    showCount: true,
    maxLength: 10,
    minLength: 0,
    autoSize: true,
}
/*
* inputNumber  基础配置
* size: 选择框尺寸
* disabled: 是否禁用
* allowClear: 是否可清空
* placeholder: 占位符
* min: 最小值
* max: 最大值
* step: 每次改变步数，可以为小数
* precision: 数值精度
* formatter: 指定输入框展示值的格式
* bordered: 是否有边框
* controls: 是否使用控制按钮
* */
export const BASE_INPUTNUMBER_CONFIG = {
    placeholder: '请输入',
    disabled: false,
    allowClear: true,
    size: 'small',
    step: 1,
    precision: 0,
    bordered: true,
    controls: true,
}
/*
* radio 基础配置
* size: 选择框尺寸
* disabled: 是否禁用
* name: radio组名
* */
export const BASE_RADIO_CONFIG = {
    disabled: false,
    size: 'small',
    name: 'radio',
}
/*
* checkbox 基础配置
* disabled: 是否禁用
* name: checkbox组名
* */
export const BASE_CHECKBOX_CONFIG = {
    disabled: false,
    name: 'checkbox',
}
/*
* datePicker 基础配置
* size: 选择框尺寸
* disabled: 是否禁用
* allowClear: 是否可清空
* placeholder: 占位符
* showTime: 是否显示时间选择
* format: 展示的日期格式
* bordered: 是否有边框
* */
export const BASE_DATE_CONFIG = {
    placeholder: '请选择',
    disabled: false,
    allowClear: true,
    size: 'small',
    showTime: false,
    format: 'YYYY-MM-DD',
    bordered: true,
    placement: 'bottomLeft',
    picker: 'date',
}
/*
* autoComplete 基础配置
* size: 选择框尺寸
* disabled: 是否禁用
* allowClear: 是否可清空
* placeholder: 占位符
* bordered: 是否有边框
* */
export const BASE_AUTOCOMPLETE_CONFIG = {
    placeholder: '请输入',
    disabled: false,
    allowClear: true,
    size: 'small',
    bordered: true,
}
/*
* cascader 基础配置
* size: 选择框尺寸
* disabled: 是否禁用
* allowClear: 是否可清空
* placeholder: 占位符
* bordered: 是否有边框
* loadData: 是否动态加载数据
* fieldNames: 自定义options中 label name children字段
* maxTagCount: 最多显示多少个tag
* */
export const BASE_CASCADER_CONFIG = {
    placeholder: '请选择',
    disabled: false,
    allowClear: true,
    size: 'small',
    bordered: true,
    loadData: false,
    fieldNames: {
        label: 'label',
        value: 'value',
        children: 'children',
    },
    maxTagCount: 1,
    multiple: false,
}
/*
* treeSelect 基础配置
* size: 选择框尺寸
* disabled: 是否禁用
* allowClear: 是否可清空
* placeholder: 占位符
* bordered: 是否有边框
* loadData: 是否动态加载数据
* fieldNames: 自定义options中 label name children字段
* maxTagCount: 最多显示多少个tag
* */
export const BASE_TREESELECT_CONFIG = {
    placeholder: '请选择',
    disabled: false,
    allowClear: true,
    size: 'small',
    bordered: true,
    loadData: false,
    fieldNames: {
        label: 'label',
        value: 'value',
        children: 'children',
    },
    maxTagCount: 1,
    multiple: false,
    maxHeight: 200,
    treeDefaultExpandAll: false,
    treeCheckable: false,
}
/*
* upload 基础配置
* size: 上传大小
* disabled: 是否禁用
* multiple: 是否支持多选文件
* accept: 接受上传的文件类型
* action: 上传的地址
* method: 上传请求的 http method
* data: 上传所需参数或返回上传参数的方法
* headers: 设置上传的请求头部
* fileList: 已经上传的文件列表
* listType: 上传列表的内建样式
* */
export const BASE_UPLOAD_CONFIG = {
    disabled: false,
    multiple: false,
    accept: '',
    action: '',
    method: 'post',
    data: {},
    headers: {},
    fileList: [],
    listType: 'text',
    // 上传大小2M
    size: 2,
    // 上传数量
    maxCount: 1,
}
/*
* form 基础配置
* labelCol: label 标签布局
* wrapperCol: 需要为输入控件设置布局样式时
* layout: 表单布局
* labelAlign: label 标签的文本对齐方式
* size: 表单大小
* colon: 是否在 label 后面添加冒号
* scrollToFirstError: 为true时，当表单验证不通过时，滚动到第一个错误处
* */
export const BASE_FORM_CONFIG = {
    titleCol: { span: 4 },
    wrapperCol: { span: 20 },
    layout: 'horizontal',
    titleAlign: 'right',
    size: 'small',
    colon: true,
    scrollToFirstError: true,
}
/*
* table 基础配置
* size: 表格大小
* bordered: 是否展示外边框和列边框
* showHeader: 是否显示表头
* showFooter: 是否显示表尾
* rowKey: 表格行 key 的取值，可以是字符串或一个函数
* scroll: 设置横向或纵向滚动，也可用于指定滚动区域的宽和高
* pagination: 分页器
* loading: 页面是否加载中
* */
export const BASE_TABLE_CONFIG = {
    size: 'small',
    bordered: true,
    showHeader: true,
    showFooter: false,
    rowKey: 'sid',
    scroll: { x: 1000 },
    pagination: {
        showSizeChanger: true,
        showQuickJumper: true,
        showTotal: (total: number) => `共 ${total} 条`,
        pageSizeOptions: ['10', '20', '30', '40'],
        defaultPageSize: 10,
        defaultCurrent: 1,
        total: 0,
    },
    loading: false,
}

/*
* table-column 基础配置
* label: 列头显示文字
* prop: 列数据在数据项中对应的路径，支持通过数组查询嵌套路径
* key: React 需要的 key，如果已经设置了唯一的 dataIndex，可以忽略这个属性
* width: 列宽度
* align: 设置列内容的对齐方式
* customRender: 自定义渲染列，可用于合并行或列
* ellipsis: 超过宽度将自动省略
* filters: 表头的筛选菜单项
* filterMultiple: 是否多选
* filterIcon: 自定义 filter 图标
* filterDropdown: 自定义 filter 菜单
* filteredValue: 筛选的受控值
* sorter: 排序函数，本地排序使用一个函数(参考 Array.sort 的 compareFunction)，需要服务端排序可设为 true
* sortDirections: 支持的排序方式
* defaultSortOrder: 默认的排序顺序
* customCell: 自定义渲染单元格，使用示例
* customHeaderCell: 自定义渲染表头单元格，使用示例
* colSpan: 表头列合并,设置为 0 时，不渲染
* rowSpan: 表头行合并,设置为 0 时，不渲染
* fixed: 列是否固定，可选 true(left) 'left' right
* onFilter: 本地模式下，确定筛选的运行函数
* onFilterDropdownOpenChange: 筛选菜单是否打开的回调
* */
export const BASE_TABLE_COLUMN_CONFIG = {
    width: '',
    align: 'center',
    customRender: null,
    ellipsis: false,
    filters: [],
    filterMultiple: true,
    filterIcon: null,
    filterDropdown: null,
    filteredValue: [],
    sorter: null,
    sortDirections: ['ascend', 'descend'],
    defaultSortOrder: null,
    customCell: null,
    customHeaderCell: null,
    fixed: false,
    onFilter: null,
    onFilterDropdownOpenChange: null,
}

/*
* BASE_ROWSELECTION_CONFIG 基础配置
* type: 选择类型
* selectedRowKeys: 指定选中项的 key 数组，需要和 onChange 进行配合
* getCheckboxProps: 选择框的默认属性配置
* onChange: 选中项发生变化时的回调
* onSelect: 用户手动选择/取消选择某列的回调
* onSelectAll: 用户手动选择/取消选择所有列的回调
* onSelectInvert: 用户手动选择反选的回调
* */
export const BASE_ROWSELECTION_CONFIG = {
    type: 'checkbox',
    selectedRowKeys: [],
    getCheckboxProps: null,
    onChange: null,
    onSelect: null,
    onSelectAll: null,
    onSelectInvert: null,
}
